
DMOD LEARNING STUFF


Hi, I hope this will help you to understand the great powers of Making A Dmod...
It's the coolest thing on earth so get ready (if you don't understand something please feel free to mail me
Krullebol@wish.nl)

CHAPTER 1 How to start

CHAPTER 2 Beginning in DinkEdit

CHAPTER 3 DinkC, not that hard to learn, but REALLY hard to master
									   
CHAPTER 4 The basics of DinkC
            								   ^
CHAPTER 5 Advanced stuff (don't read this unless you've read all the stuff |

CHAPTER 6 Finishing

CHAPTER 7 How I made my games

CHAPTER 8 Some usefull tips & information

* means an important tip



CHAPTER 1 How to start


* It's smart to download a skeleton dmod, so you can start right away

You start with thinking of storyline.
Then you must think of a name for the game, it has got to do something with the importartant things in the
game, or else it's kinda unclear what to think of a name.
Then you must create the important characters and to know in what enviroment and time the game plays.
When you've done that, you can start working in dinkedit



CHAPTER 2 Beginning in DinkEdit


* You can get DinkEdit from the Dink Smallwood CD-Rom

First, you see 768 purple screens. One screen on the map is one screen in the game. When you want to edit a
screen, press [ENTER] on that screen. A S means it's not showed on the player map (indoors, select by pressing
[S] and changing it to 1) and a M means that there is a midi playing in that map screen (press [M] and fill in
the number of the midi <as in the directory SOUND>).
Press [SPACE] to show a mini map and press [Z] to hide/show the help text. Press [Q] when ready to save & quit.
Press [ENTER] on a screen. Now you see the screen as how it will look like in the game. You can add objects by 
pressing [E] on the keyboard.
Here you see a bunch of objects, you can scroll through the many pages by pressing [{] and [}] on the
keyboard.
Press [ENTER] on the object of choice to add it to the screen.
Press [1] [2] [3] etc. to see the tiles. also [SHIFT + 1] etc., [ALT] and [CTRL]. Hold down [SHIFT] to make
select more tiles at once.


* Press [SPACE] to check the hardness of the objects. White means hard, orange means that thhe player will warp
  when touched. Press [I] to see a bunch of information of EVERY thin in the screen

* A nice and detailed mapdesign always has a good influence on the graphics and gameplay

Now I will sum up all the properties of the objects. Press the commands while holding the object;

[1] is the size of the object. The maximum size is 1500.
[2] is the the type of object. change it to 2 to make it invisible.
[3] is the brain of the object. Check | for the functions of the brains.
                                      V

brain 1: Human brain.
brain 2: Not used.
brain 3: Duck brain.
brain 4: Pig brain.
brain 5: When seq is done, kills but leaves last frame drawn to the
         background.
brain 6: Repeat brain - does the active SEQ over and over.
brain 7: Same as brain 5 but does not draw last frame to the background.
brain 9: Person/monster (No diagonals).
brain 10: Person/monster (Only diagonals).
brain 11: Missile brain - repeats SEQ.
brain 12: Will shrink/grow to match size in sp_brain_parm, then die.
brain 13: Mouse brain (for intro, the pointer) (do set_keep_mouse to use
          inside game as well).
brain 14: Button brain.  (intro buttons, can be used in game as well).
brain 15: Shadow brain.  Shadows for fireballs ect.
brain 16: Smart People brain.  They can walk around, stop and look.
brain 17: Missile brain, but kills itself when SEQ is done.

* Info on brain 11:
Check item-fb.c for an example of the missile brain used.  Brain_parm
and brain_parm2 can be used to set certain sprites this missile cannot
damage. (for instance, the guy who shot it and the missiles shadow
effect, if used)

* Info on brain 15:
To use this brain, use sp_brain_parm() to set a sprite to mimic.  It
will copy this sprites location until the sprite is killed, at which
point it will kill itself

[4] is the speed of the object. This is ONLY the walking/sequence speed.
[5] is the timing (you better not change this, this works automaticaly). 
[6] is the base walk. This means like which figure the object is walking. for example, 130 is the base walk
    for a pillbug, when you make a dragon with base walk 130, the dragon would walk looking like a pillbug.
[7] stands for base idle (like timing, you better not change this, this works automaticaly).
[8] is the depth que. with this you can make an object 'hide' under an other object, or make an object 'lying'
    on an other object (like a pie on a table). When the depht que of an object is HIGHER, than the object will
    lie ON the other object. When the depht que of an object is LOWER, that object would LIE UNDER the object.
[9] is the hardness. 0 means that it's HARD (you can't walk through it), 1 stands for SOFT (you can walk right
    through it). You can change the HARDBOX of a sprite like this: 1. Select the sprite. 2. Press [E]. 3. Press
    [E] again. 4. Now you can change the HARDBOX. try changing it with the [ARROW] keys. 5. Change the
    functions with [TAB]. 6. When you're ready, press [S], now the settings are saved (you'll hear a funny
    sound as confirmation).
[0] Property. 0 is normal, 1 means that Dink will teleport to a place when touching it (nice for doors).
[SHIFT + 1] if property is 1, you can set the map where you will teleport to. (1-768)
[SHIFT + 2] if property is 1, you can set the X coordinate.
[SHIFT + 3] if property is 1, you can set the Y coordinate.
[SHIFT + 4] this is the squence, no need to do anything with this.
[SHIFT + 5] this is VERY IMPORTANT. with this you attch a SCRIPT to a sprite(/object). For example, when
            making a tree says "Hi!" to you when talking to it, you must create a file (with a DinkCEditor)
            named (for example) "Tree.c". (for information how to do this, read "CHAPTER 3 DinkC, not that 
            hard to learn, but REALLY hard to master"). Now you must press [SHIFT + 5] when holding the tree 
            and give the tree a script named "Tree" (NO .C!!). Now when you go play your game, the tree will
            say "Hi!" to you when you talk (press [SPACE]) to it.
[SHIFT + 6] this is the base death, also with this, better not change this, this works automaticaly.
[SHIFT + 7] this is really cool. You can add a sound to the object with this. To see which codes belong to
            which soundeffect, you must look at the file "main.c". For example you can add sound 37 to stairs,
            so you'll here footsteps when walking on the stairs. (the sounds for pigs and ducks are done
            automaticaly when creating brain 3<duck brain> and brain 4<pig brain>)
[SHIFT + 8] with this you set the ammount of HITPOINTS of a sprite. (how much life it has)
[SHIFT + 9] this sets the nohit, when set to 1, you can't hit it, when set to 0, you can. (kinda like hardness,
            but then if you can hit or not)
[ALT + 1] Alright wit this you can change the touch damage. If the touch damage of a Goblin 5 is, then it will
          deal 5 damage to you when you get hit by the Goblin. But when you have, let's say, 2 defense, you
          will only get 3 damage when touching the Goblin (5-2=3). Not that hard, do you think?
[ALT + 2] This is the base attack. Just like the base walk, this will be done by the scripts but if you want
          to know what base attack fits by what sprite, check the DINKC.TXT on the CD. 
[ALT + 3] This is the defende of a creature. Like when you have 10 strength (dealing 10 damage), and the
          creature has 5 defense, you can only steal 5 hotpoints maximum per hit (10-5=5).

These are all the properties of the objects in DinkEdit.

Now for everyone who doesn't have 'TUT1.TXT' here is a modified version (really handy)


Start Dinkedit.

After a nice title screen, you will see 768 purple blocks.  What are all these?  Screens you can edit.  
Choose a screen and press [ENTER].

THE MAP EDIT SCREEN

You now see what looks like a Dink screen, but it is all grass.

Hit [ESCAPE] You are now back to the map selection screen, and low and behold, there is ONE red tile where 
you created your screen!  Awesome!

Let's press [SPACE] That little red tile turns green - why?  It's a tinyview of it, it's green because it's 
all grass!

Ok - very nice, but this adventure will need more than just grass.

Go back into map edit mode by hitting enter on the one little red block.

TILE SELECTION MODES

Hit 1.  Woah, a bunch of tiles.  Hit 2.  Woah, more.  This goes on until 9 - Is that all?  Nope, do the same 
thing with Shift, Ctrl or Alt held down - there are 41 tile screens in all. ( you can change them, but NOT add 
more tiles ) 


Ok, so pick a rock.  Wait.. it's too big for one tile, and it's going to take all day to do it one at a 
time... not a problem!  Hold down [SHIFT] and press the arrow keys - you can change the selection size!

Press [ENTER].  You are now back to your map.  Press [S].  You just stamped some stuff to your screen.  You 
can press [C] to 'copy' (point the upper left tile of the selection box to that tile) - if your selector is 
bigger than the tile-set, it will stamp black in those areas.

Ok, so you get the hang of stamping tiles, but wait - this map is pretty dull.  We need to add a tree that 
you can walk behind.  Is this hard?

Not really.

SPRITE PLACEMENT MODE

>From Map edit mode, hit [TAB]  Your 'box' changes into a blue arrow.

(note: you can use your mouse to move the arrow, or the keyboard, hold down [SHIFT] to move faster)

We are now ready to place some sprites.

SPRITE PICK SCREENS

Press [E] You will see a message saying "Wait, loading sprites".  This
can be pretty slow (depending on your computer) it loads the first 96 used sequences ( you can add more later )

(this is the sequence select screen)

Eventually, you'll see a screen with a bunch of little pictures. These are the first frame from that 
'sequence'.  Some sequences are animations, some contain a lot of simular sprites.

Let's look for a tree.  

You'll probably see two - you click on the first, and you'll see 20 some frames a tree catching on fire and 
burning.. Nope, not what we want.  Hit [ESCAPE] to return to the sequence selector and press [ENTER] on the 
other tree.

Now that you have picked a sequence, we can pick an individual sprite from that sequence.

(this is the sprite selection screen)

There are a couple of nice trees here, and some stumps too.  Let's pick the pointy tree (you can burn down) 
and press [ENTER].

Woah, we're back to the sprite placement screen, but instead of a little blue arrow, we are now moving a tree!

Sweet.


Click the left mouse button, and the tree is 'stuck' to the screen and you get your blue arrow back.

Now left click on the tree, woah, you can pick it up and move it again!

Now, this time, while you are 'holding' the tree, press [S] - you just stamped a tree down.  You can create a 
forest really fast this way.

To delete a tree, click on it, then press [DEL]. Do [ALT-DEL] to delete ALL sprites on the screen.

And with [I] you can see information on ALL the sprites in the screen. it WILL come in handyWith [{] and [}] 
you can scroll trough the objects.

Anyways, just paste one tree for now.

Hit [ESCAPE] or [TAB] to exit back to the map edit mode, then [ESCAPE] again to get to the map selection 
mode.  Look at the MAP # listed below (make sure your selection box is over the red tile,  the one you editted)
and write it DOWN!!!  
This is the map we will want the game to start on.

Now press [Q] to quit and save.

TRYING OUT YOUR WORK

Ok, you'll notice that the file MAP.DAT has been created in your D-Mod dir.  This will get bigger as more 
maps are added.  A file called DINK.DAT has been created too, this is related to the MAP (holds the index of 
what maps have been used and who is connected to what) and this won't get bigger.

Now, we could just type DINK -game *name of the dir* and Dink.exe would fire up
and try to play our addon, but we would run into a problem.  Dink's
starting map is PROBABLY not the same as ours, therby dink would start
on a map that doesn't exist.  (it would probably just appear as all
grass)

Why would this happen?  Because Dink would be running all the Dinkc
files from the DINK dir when it didn't find the in your own D-Mod dir, so we'll
need to copy a few. BEFORE YOU'LL DO THE FOLLLOWNG CHECK THE NEXT TIP...!

Copy MAIN.C from the dink\story dir to the *dir of your dmod*\story dir.  (oh, did I
mention you need to make a sub dir called STORY of your dmod dir?)

Next copy START*.* from the dink\story dir to *name of the dmod*\story dir.

* Just copying the whole STORY dir is much easier

We can now customize them to our liking.

Edit the *name of ya dmod*\story\start-1.c file.

A bunch of junk you don't understand you say?  Don't worry about that
for now.  Search for sp_x.  Right under that, add:

sp_map(1, your_map_#);

Instead of actually writing your_map_#, replace
that with the map # I had you write down earlier.  (example, 340)

*NOW* you can run the game.

You should see your screen and be able to walk in front of and behind
your tree.  How fun.  Only one problem.. your guy can walk THROUGH
the tree!!! What is going on here?!?!?

Ok, let's fix that.

Back to the editor.

dinkedit -game *your game*

Go edit your screen - Hit [TAB] to get into sprite edit mode.  Click on
the tree.  Guess what, we can change a TON of attributes for this
tree!  This is pretty overwhelming with it's crappy interface, but here
is how.  Press [9] A box will come up that says "Hard is 1".  One means
Dink can walk through it.  We don't want that.

Change HARD to 0.

Set the tree down.  (left mouse click)

Now press [SPACE]. You should see a little box around the base of the
tree, this is the trees HARDBOX.  This lets you know what will be hard
or not at a glance.

Now go play dink with your addon - you cannot walk through the
tree.  If you push against it long enough, this will activate the 'push'
sprites.  Nifty.

EDITTING THE HARDBOX & DEPTH DOT OF A SPRITE

Ok, back to the editor.  Let's say you don't like the hardbox on the
tree and want to change it.  You COULD edit the DINK.INI file with a text
editor, find the SEQUENCE and SPRITE # of that tree and change it's hardbox,
but there is an easier way.

Go into sprite edit mode - click on the tree.  Press [E].  (it will go directly
to that sprites frame, instead of having to manually select it like
normal) Now, press [E] again.

The screen will go blank except for the tree graphic - this is where you
can set it's depth dot (the exact point that Dink walks behind this
graphic, usually about where the shadow starts) and it's hard box.

Hit [TAB] a few times, this is how you cycle through the different
things.  Use the arrow keys to change it.  Hold down [SHIFT] to move in
larger increments as usual.

Ok, you probably really don't need to change the trees hardbox, it's fine,
but I wanted to show you how to do it, because you would want to do this
with any new sequences you added.  (your own graphics)

Oh, if you want to actually save your changes, hit [S].  You should hear
a dorky boing sound.  (a line has just been added to your DINK.INI to
set those attributes)

ATTACHING A SCRIPT TO A SPRITE

Ok, let's say we want to get a little more creative, and have the tree
say "ouch" if we punch it.  This is too easy.

Get into sprite edit mode and click on the tree - Now, 1 through 9
changes attributes, but there are more.  Hold down [SHIFT] and press 1
through 9 to access those.  (Then go to alt when those run out...)

Press [SHIFT-5]. It will prompt you for a DinkC script file to attach
to this object.  Type in TREE (the .C or .D will be appended!!!)

Set the sprite back down and exit the program.

Now we next to get out our handy-dandy text editor to make this script.

All scripts must reside in the STORY dir.

Go inside and create a file called "TREE.C" and edit it.

Put this in:

void hit(void)
{
 say("`4Ouch!", current_sprite);
}

Save it.  Now play the game.   The tree will say "Ouch!" when you hit it.  In
red even!  (The `4 is a color code)

What about if Dink hits the look/talk button while looking at the
tree?  Ok, add this to your tree.c file:

void talk(void)
{
say("That is a nice tree.", 1);
wait(500);
say("Thankyou, human.", &current_sprite);
}

Cool, but boring.  Ok fine.  Go back to the editor and create some
cool screens and put stuff on them.


Now make a beautiful world full of flora and fauna!



CHAPTER 3 DinkC, not that hard to learn, but REALLY hard to master


* You'd better read DINKC.TXT for the really advanced stuff and more examples

Now we're going to take a step into the darkness, until now, it wasn't so hard to understand (was it?) but the
folowing is real PROGRAMMING shit, so a bit of talent and a lot of practicing is required... okay here we go!

You've seen how to attach a script to a sprite in CHAPTER 2. Well you can do a lot more than only let a tree
talk. You want to know how? let me explain.

First, you have to attach a script to a sprite (with [SHIFT + 5]). Than, you've got to CREATE the script.
Try making a man in DinkEdit. Attach the script 'man1' (with [SHIFT + 5]).
Press [ALT-TAB] to minimize DinkEdit. Launch DinkC-Editor. Make a new file called 'Man1.c'

Make the following script

--------------------------------------------------------------------------------------------------------------|
| void main(void)											      |
| {													      |
| say("`5Hi Dink!", &current_sprite);									      |
| }													      |
|													      |
| void talk(void)											      |
| { 													      |
| freeze(1);												      |
| say_stop("Hi mister man, I'm learning DinkC scripting.", 1); 						      |
| wait(600);												      |
| say_stop("`5Wow, that's great Dink! I mean, If you can read this, you're on the good way", &curren_sprite); |
| Wait(600); 												      |
| say_stop("I suppose you are right, sir. Bye now!!", 1);						      |
| wait(500);												      |
| say_stop("`5Bye Dink!", &current_sprite);								      |
| unfreeze(1);												      |
| }													      |
--------------------------------------------------------------------------------------------------------------|


Ofcourse you could fill in other sentences, but this is just an example, it just that you know what the codes
for (in this case) talking and main (entering the screen) are.
REMEMBER! Always put an [;] behind a line, okay?
Now, try experimenting with this!

This is the choice-dialogue box that dmods are using often.  Everything from the load
game menu to talking with NPC's is done with this.  It's actually quite easy to use and so here is an example:

choice_start()
   "Yes"
   "No"
choice_end()

That is all!  The result will be put into &result.  So:

if (&result == 1)
  {
  //said yes
  }

if (&result == 2)
  {
  //said no
  }

Pretty damn easy huh?


*STORY*
Yes, to make quests, you'd HAVE to make use of the story - system.
It's very easy, i'll make an example for you:

Void talk(void)
{
say("Hi, here's your reward!", 1);
&story = 3;
}

this means that the story is set to 3 AFTER talking to the guy.
You can make something else with story too, like this:

Void talk(void)
{
if (&story == 3)
{
say_stop("`You've got the reward!", &current_sprite);
}

So now, when you've gotten the reward, this script will tell you this! Cool eh?
CAUTION! -> NO [;] BEHIND THE "if (&story == 3)" !!!

The screenlock feauture is cool, handy, AND easy!

just type

Screenlock(1);
to make a screen locked and

Screenlock(0);
to make a screen unlocked!

Oh and yeah, remember you could play midis with DinkEdit?
Well, you can also play music with DinkC! Do it like this:
playmidi("7");

Then you can play a midi not only in a screen, but also when you're hitting something or talking to someone.


Another sum up:
When you want to make creatures like slayers, look at the examples of dink (en-slay.c, en-pill.c) to see how
are things are done. You can easily copy that stuff to your own script, and just modify them a bit.
Anyway, I was talking about "another sum up" yeah, look at the following, it's a memo of what to fill in for
the editor_type. With that, you can choose how long it will take for a killed sprite to return ti the game.  

Editor_type can be set to the following:
0 - no change
1 - kill sprite completely
2 - draw pic from enclosed seq/frame data as a sprite WITHOUT hardness
3 - draw pic from enclosed seq/frame data as a BACKGROUND object WITH
    hardness (can't walk behind)
4 - draw pic from enclosed seq/frame data as a sprite WITH hardness
5 - draw pic from enclosed seq/frame data as a BACKGROUND object WITHOUT
    hardness (can't walk behind)
6 - kill sprite, but let him come back after 5 minutes
7 - kill sprite, but let him come back after 3 minutes
8 - kill sprite, but let him come back after 1 minute

Well, to see more examples, check the story dir of Dink or other Dmods!



CHAPTER 4 The basics of DinkC


* This is pretty important, but eventually you will remind this as if it's programmed in your brain

void talk(void)   = activate talk/examine function
void hit(void)    = activate hit function
void main(void)   = activate entering the screen function
void push(void)   = activate push funtion
void touch(void)  = activate touch function

Now you can add some lines to the script, like this;

void talk(void)
{
say("hello good man", 1);
}

This is REALLY one of the most simple examples, but you can do everything this way.

Here is some other basic stuff you probaly will use;

say("hi", 1);                = let player say "hi"
say("bye", &current_sprite); = let current sprite (object) say "bye"
say_stop("hi", 1);           = let player say "hi" you can skip text by pressing [SPACE] (while playing)

* You can add a colour to the text with ` for example you can do Say("`0wow!", 1); to make the figure (dink)
  say green say "wow!" in green. These are all the colours:

`1 - pink
`2 - dark Green
`3 - light Blue
`4 - orange
`5 - purple
`6 - brown
`7 - light Gray
`8 - dark Gray
`9 - light Blue
`0 - light Green
`# - rose
`$ - yellow (default)
`% - white

anyway, let's continue with what we were busy with, shall we?

freeze(1);                   = player can't move until unfreeze
freeze(&current_sprite);     = current sprite (object) can't move until unfreeze
unfreeze(1);                 = player can move on after freeze
unfreeze(&current_sprite);   = current sprite (object) can move after freeze
return;                      = return to game
wait(amount);                = wait, you have to to fill in a number for amount < like wait(2000); > 1000 is
                               one second (so 2000 is 2 seconds, 3000 3 seconds etc.).
				
That's it! You'd better study on this, and you'll be able to make a small dmod in no time!
				
			
          								   ^
CHAPTER 5 Advanced stuff (don't read this unless you've read all the stuff |


WARNING! This chapter contains dizzling stuff that you'd better not read if you haven't read all of the above!

Anyway, The way scripts can call other scripts, who they are connected to and
when they die is kind of like time travel - lots of theory and really
hard to understand.

Attaching a script to an item causes it to be run when the screen is
drawn - this is fine and dandy.  There is ANOTHER kind of script that
can be run BEFORE the screen is drawn, this is the script assocated with
the MAP SCREEN.  (done by pressing B in the map editor)

This script doesn't have the luxury of knowing certain info, like using
the Sp() command will always return 0, because no sprites have been drawn
yet.  However, it's a powerfull tool when used correctly, you can change
vision statements and set music BEFORE the screen is entered.

(you can do a wait(1) in a 'screen script', and it will draw all the sprites
and return, so you can manipulate the rest of the data)


ITEMS

With DinkC, you can make unlimited items.  The only limit is Dink can only
hold 16 in his inventory at one time.. this isn't because I was a lazy
programmer (for once) but I believe having to manage your items and not
being able to stock pile too many healing potions will actually make
this a better game.

Everything here also applies to magic.  The difference between magic
and items/weapons is you only have 8 magic slots, and a different button
is used to activate magic.  (so, 24 items at once basically)

This means adding a new weapon that shoots an animation of your face
across the screen with it's own sound effect is very easy to do!

You can COMPLETELY control the behavior of any item.  First, you need
to give the player the item.

int add_item(char scriptname[8], int seq, int frame);
int add_magic(char scriptname[8], int seq, int frame);

The rest is handled by the items script itself.  The best way to understand
how it works is to look at item-fst.c.. but I'll explain anyway.

The sequence and frame are the picture of the item.  As soon as this is
called, 'void pickup( void )' is called from the script.  If simple having
this item in your inventory does something magical, this is the time to
do it.

When they click on it to arm it, the script is loaded into memory and
two procedures from it are called, first it looks for 'void arm( void )'
and runs this.  This is where you would add 8 to the strength or makes
or increased Dink's size by 50 or whatever.

Second it looks for 'void armmovie( void )' - any special thing like Dink
saying "wow, I just armed so and so" is said here.  This is ONLY called
if the player arms the weapon.

When the armour is DISARMED it runs 'void disarm( void )' from the
items script.  Use a kill_this_task at the end of it.

Here are some other calls it will calls it will check for.  If any of these
don't exist, it assumed you don't need that function and doesn't sweat it.

void use( void ) - when the button is pressed, this is called.  
void holdingdrop( void ) - run when dropped and item was armed at the time.
                           (drop will be run also)
void drop( void ) - when item is 'dropped' this is called. 

void pickup( void ) - when item is 'picked up' this is called.

Use a kill_this_task at the end of drop() and pickup() also.

Now, there are times when you may need other commands dealing with
items - so here they are.

int free_items();

   Returns how many free item spots remain.

int free_magic();

   Returns how many free magic spots remain.

int count_item(char name_of_item_script)

  Returns how many items with this script name they have.

int count_magic(char name_of_item_script)

  Returns how many items with this script name they have.

void kill_cur_item( void )

  Kills the currently armed item.  Run's it's disarm script, then drop
  script.

void kill_cur_magic( void )

  Same as above but for killing the current magic equipped.

void kill_this_item( char name_of_item_script )

  Kills first instance of this item by name of script.  If it's currently
  armed, it will run it's disarm and drop, otherwise it will just run the drop
  script and remove it.

void kill_this_magic( char name_of_item_script )

  Same as above but applies to the magic slots.

int compare_weapon( char name_of_item_script)

   Example:  compare_weapon("ITEM-B1"); would return 1 if the armed item's
             script was item-b1.  Used in s3-gobg.c.

int compare_magic( char name_of_item_script)

Works like above.


Well, this was pretty mind breaking, but if you understand this stuff, you can do about practicly everything!
congratiulations!!



CHAPTER 6 Finishing


Now you must finish the D-Mod so that you can zip it up and release it on the net!

Send it to Dan Walma A.K.A Redink1 at redink1@telefragged.com



CHAPTER 7 How I made my games


* I made Secret of Parizaya & Secret of Amehoela

I made my games with the help of TUT1.TXT and really JUST A BIT of DINKC.TXT.
The thing I learned most of was looking to other D-MODS. Games like Quest for Cheese and QFD were really
helpful and authors like Mike Snyder were helping me too. Try contacting them of you think you can use some
help. Or just go to the official Dink Smallwood web site for help. 



CHAPTER 8 Some useful tips & information


Here are some useful tips and information, so actualy, this is one big * ! Let's look trough this right away.

TIPS  Some nice tips you could always use!

- Download some D-Mods, and watch carefully to what they've done rigt...and what went wrong.

- You could always copy stuff from other D-Mods (it's nice to ask it to the author first).

- Post messages on the official dink smallwood messageboard. All those people will be glad to help you out.

- Keep trying and trying and if things still fail, try comparing it with other stuff that DIDN'T fail, so you
  can see what you have done wrong.

- Still having problems? Try emailing the big guys These ara: Dan Walma A.K.A Redink1 (redink1@hotmail.com)
  or Seth Able Robinson (sethable@rtsoft.com).

SITES  Here are the URL's to the best dmod learning sites ever!

- http://www.dinksmallwood.net (then look for author files).

- http://www.dinksmallwood.net (then go to the message board and post a message with your problem, you'll 
ALWAYS get help).

- http://www.rtsoft.com/dink/pages/dmod.htm (there's a lot of info on beginning a dmod, but there
isn't really much help if you already control the basics).

And, ofcourse, you could always email me on 'krullebol@wish.nl or 'chrisj3000@hotmail.com)!

Good luck and -most important of all- have fun!


~Christiaan Janssen



